package design.mode.chapter3.item3.version1.controller;

import design.mode.chapter3.item3.version1.Storage.MetricsStorage;
import design.mode.chapter3.item3.version1.domain.RequestInfo;

/**
 * 负责打点采集原始数据，包括记录每次接口请求的响应时间和请求时间戳，并调用 MetricsStorage 提供的接口来存储这些原始数据。
 */
public class MetricsCollector {
    private MetricsStorage metricsStorage; // 基于接口编程而非实现编程

    // 依赖注入
    public MetricsCollector(MetricsStorage metricsStorage) {
        this.metricsStorage = metricsStorage;
    }

    // 用一个函数代替了最小原型中的两个函数
    public void recordRequest(RequestInfo requestInfo) {
        if (requestInfo == null || requestInfo.getApiName() == null || requestInfo.getApiName() == "") {
            return;
        }
        metricsStorage.saveRequestInfo(requestInfo);
    }
}
